package com.Beans.Employee;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.event.ActionEvent;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.model.SelectItem;
import javax.faces.model.SelectItemGroup;

import com.Beans.Dao.AreaDAO;
import com.Beans.Dao.EmpleadoDAO;
import com.Beans.Dao.RecursoinformaticoDAO;
import com.Beans.Dao.ServicioinformaticoDAO;
import com.Beans.Dao.SolicitudDAO;
import com.Beans.Dao.TrakingestadosDAO;
import com.Beans.Models.Area;
import com.Beans.Models.Empleado;
import com.Beans.Models.Recursoinformatico;
import com.Beans.Models.Servicioinformatico;
import com.Beans.Models.Solicitud;
import com.Beans.Models.Trakingestados;
import com.Beans.Sessions.Session;
import com.Beans.Util.DateStandar;

public class EmployeeRedactionRequest {
	
	private String area;
	private List<SelectItem> areas;
	private String reinf;
	private List<SelectItem> reinfs;
	private String servinf;
	private List<SelectItem> servinfs;
	private String dtmotivo;
	private String dtpermiso;
	
	
	public String getArea() {
		return area;
	}
	public void setArea(String area) {
		this.area = area;
	}
	public List<SelectItem> getAreas() {
		areas = new ArrayList<SelectItem>();
		List<Area> a = AreaDAO.findAll();
		for(int i=0;i<a.size();i++){
			SelectItem si = new SelectItem(a.get(i).getNombre(), a.get(i).getNombre());
			areas.add(si);
		}
		return areas;
	}
	public String getServinf() {
		return servinf;
	}
	public void setServinf(String servinf) {
		this.servinf = servinf;
	}
	public List<SelectItem> getServinfs() {
		return servinfs;
	}
	public String getReinf() {
		return reinf;
	}
	public void setReinf(String reinf) {
		this.reinf = reinf;
	}
	public List<SelectItem> getReinfs() {
		return reinfs;
	}
	public String getDtmotivo() {
		return dtmotivo;
	}
	public void setDtmotivo(String dtmotivo) {
		this.dtmotivo = dtmotivo;
	}
	public String getDtpermiso() {
		return dtpermiso;
	}
	public void setDtpermiso(String dtpermiso) {
		this.dtpermiso = dtpermiso;
	}
	public void setAreas(List<SelectItem> areas) {
		this.areas = areas;
	}
	public void setReinfs(List<SelectItem> reinfs) {
		this.reinfs = reinfs;
	}
	public void setServinfs(List<SelectItem> servinfs) {
		this.servinfs = servinfs;
	}
	public void onItemSelectedArea(final AjaxBehaviorEvent event){
		if(area == null){
		}
		else{
			Area a = AreaDAO.findByArea(area);
			//reinfs = new ArrayList<SelectItem>();
			List<Recursoinformatico> lr = RecursoinformaticoDAO.findByArea(a);
			List<SelectItem> u = new ArrayList<SelectItem>();
			for(int i=0;i<lr.size();i++){
				String s = lr.get(i).getNombre();
				SelectItem w = new SelectItem(s, s);
				u.add(w);
			}
			setReinfs(u);
		}
	}
	public void EnviarSolicitud (ActionEvent ae){
		Area area_destino = AreaDAO.findByArea(area);
		
		Solicitud solicitud = new Solicitud();
		solicitud.setRedactor(Session.getApellido()+", "+Session.getNombre());
		solicitud.setIdAreaOrigen(Session.getIdArea());
		solicitud.setIdAreaDestino(area_destino.getIdArea());
		solicitud.setDetalleMotivo(dtmotivo);
		solicitud.setDetallePermiso(dtpermiso);
		Date fechaEmision = DateStandar.newDate();
		solicitud.setFechaEmision(fechaEmision);
		Empleado empleado = EmpleadoDAO.findById(Session.getId());
		solicitud.setEmpleado(empleado);

		Trakingestados te = new Trakingestados();
		te.setIdEmpleado(Session.getId());
		te.setEstadoAprobado("Pendiente");
		te.setEstadoEfectuado("Pendiente");
		te.setEstadoConformidad("Inhabilitado");
		te.setEstadoSolicitud("En curso");
		te.setSolicitud(solicitud);
		
		SolicitudDAO.persistSolicitud(solicitud);
		TrakingestadosDAO.persistActivo(te);
		
		Session.redirectTo("/empleado/solicitudes.xhtml");
	}
	
}
